﻿#define _CRT_SECURE_NO_WARNINGS 1
//题目：排队打水
//有 n个人排队到 1个水龙头处打水，第 i个人装满水桶所需的时间是 ti，请问如何安排他们的打水顺序才能使所有人的等待时间之和最小？
//输入格式
//第一行包含整数 n。
//第二行包含 n个整数，其中第 i个整数表示第 i个人装满水桶所花费的时间 ti。
//输出格式
//输出一个整数，表示最小的等待时间之和。
//数据范围
//1≤n≤105,1≤ti≤104
//输入样例：
//7
//3 6 1 4 2 5 7
//输出样例：
//56
//#include <iostream>
//#include <algorithm>
//using namespace std;
//
//typedef long long LL;//不能用int，会超数据范围
//const int N = 100010;
//
//int a[N];//表示每个人打水的时间
//
//int n;
//int main()
//{
//    cin >> n;
//    LL res = 0;
//    for (int i = 1; i <= n; i++)
//        cin >> a[i];
//    sort(a + 1, a + n + 1);
//    int j = n - 1;//最后一个人不需要时间
//    for (int i = 2; i <= n; i++)//第一个人开始也不需要时间
//    {
//
//        res += a[i - 1] * j;
//        j--;
//    }
//    cout << res << endl;
//    return 0;
//}

//题目：货仓选址
//在一条数轴上有 N家商店，它们的坐标分别为 A1∼AN。
//现在需要在数轴上建立一家货仓，每天清晨，从货仓到每家商店都要运送一车商品。
//为了提高效率，求把货仓建在何处，可以使得货仓到每家商店的距离之和最小。
//输入格式
//第一行输入整数 N。
//第二行 N个整数 A1∼AN。
//输出格式
//输出一个整数，表示距离之和的最小值。
//数据范围
//1≤N≤100000,0≤Ai≤40000
//输入样例：
//4
//6 2 9 1
//输出样例：
//12
#include <iostream>
#include <algorithm>
using namespace std;

typedef long long LL;//不能用int，会超数据范围
const int N = 100010;

int a[N];//表示每个人打水的时间

int n;
int main()
{
    cin >> n;
    LL res = 0;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    sort(a + 1, a + n + 1);
    int j = n - 1;//最后一个人不需要时间
    for (int i = 2; i <= n; i++)//第一个人开始也不需要时间
    {

        res += a[i - 1] * j;
        j--;
    }
    cout << res << endl;
    return 0;
}